home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 007 / cstdio.arc / SRC.ARC / DSMEM.C < prev    next >
C/C++ Source or Header  |  1985-05-17  |  1KB  |  68 lines

  1. /*    dsmem.c - display memory.
  2.     (C) Copyright 1983,1984, 1985 Gregory R. Mansfield - All Rights Reserved.
  3.     G. R. Mansfield.  83/11/24.
  4.     Ver 1.1-5517.
  5. */
  6.  
  7. #include <defstd.h>
  8.  
  9. /* local functions */
  10. static void chw(), chb(), chd();
  11.  
  12. /* local data */
  13. static char *sp;
  14.  
  15. dsmem(a, f, n) /* display memory block */
  16. BYTE    *a;        /* start of data */
  17. WORD    f;        /* display field address */
  18. int        n;        /* number of bytes to display */
  19. {
  20.     BYTE *p;
  21.     char s[90];
  22.     int i, j;
  23.  
  24.     for (i = 0; i < n; i += 16) {
  25.         sp = s;
  26.         *sp++ = ' ';
  27.         chw(f);
  28.         *sp++ = ' ';
  29.         f += 16;
  30.         p = a;
  31.         for (j = 0; j < 16; j++) {
  32.             if ((j & 3) == 0)
  33.                 *sp++ = ' ';
  34.             chb(*p++);
  35.             *sp++ = ' ';
  36.         }
  37.         *sp++ = ' ';
  38.         for (j = 0; j < 16; j++) {
  39.             *sp++ = ((*a < 0x20) || (*a >= 0x7F)) || (*a == '$') ? '.' : *a;
  40.             a++;
  41.         }
  42.         *sp++ = '\n';
  43.         *sp = 0;
  44.         wcs(s);
  45.     }
  46. }
  47.  
  48. static void chw(w) /* convert hex word */
  49. WORD w;
  50. {
  51.     chb(w >> 8);
  52.     chb(w);
  53. }
  54.  
  55. static void chb(b) /* convert hex byte */
  56. BYTE b;
  57. {
  58.     chd(b >> 4);
  59.     chd(b);
  60. }
  61.  
  62. static void chd(n) /* convert hex digit to p advancing p */
  63. BYTE n;
  64. {
  65.     n &= 0xF;
  66.     *sp++ = (n >= 10) ? n + ('A' - 10) : n + '0';
  67. }
  68.